<!DOCTYPE html>
<html lang=zh>
<head>
    <!-- so meta -->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="HandheldFriendly" content="True">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
    <meta name="description" content="Decorators for Functions and Methods1.函数实现装饰函数的装饰器（Function Decorators）1.1函数不带参数123456789101112def decorator(fun):    def wrapper():        print(&apos;into fun decorator&apos;)        fun()    return wrapper@d">
<meta property="og:type" content="article">
<meta property="og:title" content="Python装饰器之函数的装饰器">
<meta property="og:url" content="http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/index.html">
<meta property="og:site_name" content="enomine">
<meta property="og:description" content="Decorators for Functions and Methods1.函数实现装饰函数的装饰器（Function Decorators）1.1函数不带参数123456789101112def decorator(fun):    def wrapper():        print(&apos;into fun decorator&apos;)        fun()    return wrapper@d">
<meta property="og:updated_time" content="2017-04-28T08:27:09.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Python装饰器之函数的装饰器">
<meta name="twitter:description" content="Decorators for Functions and Methods1.函数实现装饰函数的装饰器（Function Decorators）1.1函数不带参数123456789101112def decorator(fun):    def wrapper():        print(&apos;into fun decorator&apos;)        fun()    return wrapper@d">
    
    
        
          <link rel="shortcut icon" href="/images/favicon.ico">
        
        
          <link rel="icon" type="image/png" href="/images/favicon-192x192.png" sizes="192x192">
        
        
          <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
        
    
    <!-- title -->
    <title>Python装饰器之函数的装饰器</title>
    <!-- styles -->
    <link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
    <link rel="stylesheet" href="/lib/meslo-LG/styles.css">
    <link rel="stylesheet" href="/lib/justified-gallery/justifiedGallery.min.css">
    <link rel="stylesheet" href="/css/style.css">
    <!-- rss -->
    
    
    <!-- jquery -->
    <script src="/lib/jquery/jquery.min.js"></script>
</head>

<body>
    
      <div id="header-post">
  <a id="menu-icon" href="#"><i class="fa fa-bars fa-lg"></i></a>
  <span id="menu">
    <span id="nav">
      <ul>
         
          <li><a href="/">Home</a></li>
         
          <li><a href="/about/">About</a></li>
         
          <li><a href="/archives/">Writing</a></li>
         
          <li><a href="http://github.com/enominecn">Projects</a></li>
        
      </ul>
    </span>
    <br/>
    <span id="actions">
      <span id="i-prev" class="info" style="display:none;">Previous post</span>
      <span id="i-next" class="info" style="display:none;">Next post</span>
      <span id="i-top" class="info" style="display:none;">Back to top</span>
      <span id="i-share" class="info" style="display:none;">Share post</span>
      <ul>
        
        <li><a class="icon" href="/2017/04/17/singleton-in-python/"><i class="fa fa-chevron-left" aria-hidden="true" onmouseover='$("#i-prev").toggle();' onmouseout='$("#i-prev").toggle();'></i></a></li>
        
        
        <li><a class="icon" href="/2016/12/11/deploy-hexo-blog-to-vps-by-git-hook/"><i class="fa fa-chevron-right" aria-hidden="true" onmouseover='$("#i-next").toggle();' onmouseout='$("#i-next").toggle();'></i></a></li>
        
        <li><a class="icon" href="#" onclick="$('html, body').animate({ scrollTop: 0 }, 'fast');"><i class="fa fa-chevron-up" aria-hidden="true" onmouseover='$("#i-top").toggle();' onmouseout='$("#i-top").toggle();'></i></a></li>
        <li><a class="icon" href="#"><i class="fa fa-share-alt" aria-hidden="true" onmouseover='$("#i-share").toggle();' onmouseout='$("#i-share").toggle();' onclick='$("#share").toggle();return false;'></i></a></li>
      </ul>
    </span>
    <br/>
    <div id="share" style="display: none">
      <ul>
        <li><a class="icon" href="http://www.facebook.com/sharer.php?u=http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/"><i class="fa fa-facebook" aria-hidden="true"></i></a></li>
        <li><a class="icon" href="https://twitter.com/share?url=http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/&text=Python装饰器之函数的装饰器"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
        <li><a class="icon" href="http://www.linkedin.com/shareArticle?url=http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/&title=Python装饰器之函数的装饰器"><i class="fa fa-linkedin" aria-hidden="true"></i></a></li>
        <li><a class="icon" href="https://pinterest.com/pin/create/bookmarklet/?url=http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/&is_video=false&description=Python装饰器之函数的装饰器"><i class="fa fa-pinterest" aria-hidden="true"></i></a></li>
        <li><a class="icon" href="mailto:?subject=Python装饰器之函数的装饰器&body=Check out this article: http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/"><i class="fa fa-envelope" aria-hidden="true"></i></a></li>
        <li><a class="icon" href="https://getpocket.com/save?url=http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/&title=Python装饰器之函数的装饰器"><i class="fa fa-get-pocket" aria-hidden="true"></i></a></li>
        <li><a class="icon" href="http://reddit.com/submit?url=http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/&title=Python装饰器之函数的装饰器"><i class="fa fa-reddit" aria-hidden="true"></i></a></li>
        <li><a class="icon" href="http://www.stumbleupon.com/submit?url=http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/&title=Python装饰器之函数的装饰器"><i class="fa fa-stumbleupon" aria-hidden="true"></i></a></li>
        <li><a class="icon" href="http://digg.com/submit?url=http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/&title=Python装饰器之函数的装饰器"><i class="fa fa-digg" aria-hidden="true"></i></a></li>
        <li><a class="icon" href="http://www.tumblr.com/share/link?url=http://enomineCN.github.io/2017/04/17/Decorators-for-Functions-and-Methods/&name=Python装饰器之函数的装饰器&description="><i class="fa fa-tumblr" aria-hidden="true"></i></a></li>
      </ul>
    </div>
    <div id="toc">
      <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#Decorators-for-Functions-and-Methods"><span class="toc-number">1.</span> <span class="toc-text">Decorators for Functions and Methods</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#1-函数实现装饰函数的装饰器（Function-Decorators）"><span class="toc-number">1.1.</span> <span class="toc-text">1.函数实现装饰函数的装饰器（Function Decorators）</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-1函数不带参数"><span class="toc-number">1.1.1.</span> <span class="toc-text">1.1函数不带参数</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#1-2函数带参数"><span class="toc-number">1.1.2.</span> <span class="toc-text">1.2函数带参数</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#1-3装饰器带参数"><span class="toc-number">1.1.3.</span> <span class="toc-text">1.3装饰器带参数</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#1-4-functools-wraps"><span class="toc-number">1.1.4.</span> <span class="toc-text">1.4@functools.wraps</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2-类实现装饰函数的装饰器（Class-Decorators）"><span class="toc-number">1.2.</span> <span class="toc-text">2.类实现装饰函数的装饰器（Class Decorators）</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#2-2函数带参数"><span class="toc-number">1.2.1.</span> <span class="toc-text">2.2函数带参数</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-3装饰器带参数"><span class="toc-number">1.2.2.</span> <span class="toc-text">2.3装饰器带参数</span></a></li></ol></li></ol></li></ol>
    </div>
  </span>
</div>

    
    <div class="content index width mx-auto px2 my4">
        
        <article class="post" itemscope itemtype="http://schema.org/BlogPosting">
  <header>
    
    <h1 class="posttitle" itemprop="name headline">
        Python装饰器之函数的装饰器
    </h1>



    <div class="meta">
      <span class="author" itemprop="author" itemscope itemtype="http://schema.org/Person">
        <span itemprop="name">enomine</span>
      </span>
      
    <div class="postdate">
        <time datetime="2017-04-17T01:27:22.000Z" itemprop="datePublished">2017-04-17</time>
    </div>


      
    <div class="article-tag">
        <i class="fa fa-tag"></i>
        <a class="tag-link" href="/tags/decorator/">decorator</a>
    </div>


    </div>
  </header>
  

  <div class="content" itemprop="articleBody">
    <h1 id="Decorators-for-Functions-and-Methods"><a href="#Decorators-for-Functions-and-Methods" class="headerlink" title="Decorators for Functions and Methods"></a>Decorators for Functions and Methods</h1><h2 id="1-函数实现装饰函数的装饰器（Function-Decorators）"><a href="#1-函数实现装饰函数的装饰器（Function-Decorators）" class="headerlink" title="1.函数实现装饰函数的装饰器（Function Decorators）"></a>1.函数实现装饰函数的装饰器（Function Decorators）</h2><h3 id="1-1函数不带参数"><a href="#1-1函数不带参数" class="headerlink" title="1.1函数不带参数"></a>1.1函数不带参数</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">decorator</span><span class="params">(fun)</span>:</span></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">wrapper</span><span class="params">()</span>:</span></div><div class="line">        print(<span class="string">'into fun decorator'</span>)</div><div class="line">        fun()</div><div class="line">    <span class="keyword">return</span> wrapper</div><div class="line"></div><div class="line"><span class="meta">@decorator</span></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">echo</span><span class="params">()</span>:</span></div><div class="line">    print(<span class="string">'into echo'</span>)</div><div class="line"></div><div class="line">echo()</div><div class="line"><span class="comment"># echo() =&gt; decorator(echo)() =&gt; wrapper()</span></div></pre></td></tr></table></figure>
<h3 id="1-2函数带参数"><a href="#1-2函数带参数" class="headerlink" title="1.2函数带参数"></a>1.2函数带参数</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">decorator</span><span class="params">(fun)</span>:</span></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">wrapper</span><span class="params">(*args, **kwargs)</span>:</span></div><div class="line">        print(<span class="string">'into fun decorator'</span>)</div><div class="line">        print(*args, **kwargs)</div><div class="line">        fun(*args, **kwargs)</div><div class="line">    <span class="keyword">return</span> wrapper</div><div class="line"></div><div class="line"></div><div class="line"><span class="meta">@decorator</span></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">echo</span><span class="params">(name, age)</span>:</span></div><div class="line">    print(<span class="string">'into echo '</span> + name + <span class="string">' '</span> + age)</div><div class="line"></div><div class="line">echo(<span class="string">'nike'</span>, <span class="string">'20'</span>)</div><div class="line"><span class="comment"># echo('nike', '20') =&gt; decorator(echo)('nike', '20') =&gt; wrapper('nike', '20')</span></div></pre></td></tr></table></figure>
<h3 id="1-3装饰器带参数"><a href="#1-3装饰器带参数" class="headerlink" title="1.3装饰器带参数"></a>1.3装饰器带参数</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div></pre></td><td class="code"><pre><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">decorator</span><span class="params">(*o_args, **o_kwargs)</span>:</span></div><div class="line">    print(<span class="string">'into outer fun decorator'</span>)</div><div class="line">    print(*o_args, **o_kwargs)</div><div class="line"></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">outer_wrapper</span><span class="params">(fun)</span>:</span></div><div class="line">        <span class="function"><span class="keyword">def</span> <span class="title">wrapper</span><span class="params">(*args, **kwargs)</span>:</span></div><div class="line">            print(<span class="string">'into fun decorator'</span>)</div><div class="line">            print(*o_args, **o_kwargs)</div><div class="line">            print(*args, **kwargs)</div><div class="line">            fun(*args, **kwargs)</div><div class="line">        <span class="keyword">return</span> wrapper</div><div class="line">    <span class="keyword">return</span> outer_wrapper</div><div class="line"></div><div class="line"></div><div class="line"><span class="meta">@decorator('hi', 'decorator')</span></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">echo</span><span class="params">(name, age)</span>:</span></div><div class="line">    print(<span class="string">'into echo '</span> + name + <span class="string">' '</span> + age)</div><div class="line"></div><div class="line">echo(<span class="string">'nike'</span>, <span class="string">'20'</span>)</div><div class="line"><span class="comment"># echo('nike', '20') =&gt; decorator('hi', 'decorator')(echo)('nike', '20')</span></div><div class="line"><span class="comment"># =&gt; outer_wrapper(echo)('nike', '20') =&gt; wrapper('nike', '20')</span></div></pre></td></tr></table></figure>
<h3 id="1-4-functools-wraps"><a href="#1-4-functools-wraps" class="headerlink" title="1.4@functools.wraps"></a>1.4@functools.wraps</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">import</span> functools</div><div class="line"></div><div class="line"></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">decorator</span><span class="params">(fun)</span>:</span></div><div class="line"><span class="meta">    @functools.wraps(fun)</span></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">wrapper</span><span class="params">()</span>:</span></div><div class="line">        print(<span class="string">'into fun decorator'</span>)</div><div class="line">        fun()</div><div class="line">    <span class="keyword">return</span> wrapper</div><div class="line"></div><div class="line"></div><div class="line"><span class="meta">@decorator</span></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">echo</span><span class="params">()</span>:</span></div><div class="line">    print(<span class="string">'into echo'</span>)</div><div class="line"></div><div class="line">print(echo.__name__)</div></pre></td></tr></table></figure>
<h2 id="2-类实现装饰函数的装饰器（Class-Decorators）"><a href="#2-类实现装饰函数的装饰器（Class-Decorators）" class="headerlink" title="2.类实现装饰函数的装饰器（Class Decorators）"></a>2.类实现装饰函数的装饰器（Class Decorators）</h2><p>###2.1函数不带参数<br><figure class="highlight python"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div></pre></td><td class="code"><pre><div class="line"><span class="class"><span class="keyword">class</span> <span class="title">Decorator</span>:</span></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self, fun)</span>:</span></div><div class="line">        print(<span class="string">'__init__'</span>)</div><div class="line">        self.fun = fun</div><div class="line"></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__call__</span><span class="params">(self)</span>:</span></div><div class="line">        print(<span class="string">'__call__'</span>)</div><div class="line">        self.fun()</div><div class="line"></div><div class="line"></div><div class="line"><span class="meta">@Decorator</span></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">echo</span><span class="params">()</span>:</span></div><div class="line">    print(<span class="string">'into echo'</span>)</div><div class="line"></div><div class="line">echo()</div><div class="line">echo()</div><div class="line"><span class="comment"># def echo() =&gt; Decorator.__init__(echo)</span></div><div class="line"><span class="comment"># echo() =&gt; Decorator.__call__()</span></div></pre></td></tr></table></figure></p>
<h3 id="2-2函数带参数"><a href="#2-2函数带参数" class="headerlink" title="2.2函数带参数"></a>2.2函数带参数</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div></pre></td><td class="code"><pre><div class="line"><span class="class"><span class="keyword">class</span> <span class="title">Decorator</span>:</span></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self, fun)</span>:</span></div><div class="line">        print(<span class="string">'__init__'</span>)</div><div class="line">        print(fun)</div><div class="line">        self.fun = fun</div><div class="line"></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__call__</span><span class="params">(self, *args, **kwargs)</span>:</span></div><div class="line">        print(<span class="string">'__call__'</span>)</div><div class="line">        print(args, kwargs)</div><div class="line">        self.fun(*args, **kwargs)</div><div class="line"></div><div class="line"></div><div class="line"><span class="meta">@Decorator</span></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">echo</span><span class="params">(name)</span>:</span></div><div class="line">    print(<span class="string">'into echo'</span> + name)</div><div class="line"></div><div class="line">echo(<span class="string">'2'</span>)</div><div class="line">echo(<span class="string">'3'</span>)</div><div class="line"><span class="comment"># echo(2) = Decorator(echo)(2) = Decorator.__init__(echo).__call__(2)</span></div></pre></td></tr></table></figure>
<h3 id="2-3装饰器带参数"><a href="#2-3装饰器带参数" class="headerlink" title="2.3装饰器带参数"></a>2.3装饰器带参数</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div></pre></td><td class="code"><pre><div class="line"><span class="class"><span class="keyword">class</span> <span class="title">Decorator</span>:</span></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self, *args, **kwargs)</span>:</span></div><div class="line">        print(<span class="string">'__init__'</span>)</div><div class="line">        print(args, kwargs)</div><div class="line"></div><div class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__call__</span><span class="params">(self, fun)</span>:</span></div><div class="line">        print(<span class="string">'__call__'</span>)</div><div class="line"></div><div class="line">        <span class="function"><span class="keyword">def</span> <span class="title">wrapper</span><span class="params">(*args, **kwargs)</span>:</span></div><div class="line">            print(<span class="string">'into wrapper'</span>)</div><div class="line">            fun(*args, **kwargs)</div><div class="line">        <span class="keyword">return</span> wrapper</div><div class="line"></div><div class="line"></div><div class="line"><span class="meta">@Decorator('1', '2')</span></div><div class="line"><span class="function"><span class="keyword">def</span> <span class="title">echo</span><span class="params">(name)</span>:</span></div><div class="line">    print(<span class="string">'into echo'</span> + name)</div><div class="line"></div><div class="line">echo(<span class="string">'3'</span>)</div><div class="line">echo(<span class="string">'4'</span>)</div><div class="line"><span class="comment"># echo('2') = wrapper('2')</span></div><div class="line"><span class="comment"># echo('2') = Decorator('1')(echo)('2') = Decorator.__init__('1').__call__(echo).__call__('2')</span></div></pre></td></tr></table></figure>

  </div>
</article>



      </div>
    <footer id="footer">
  <div class="footer-left">
    Copyright &copy; 2017 enomine
  </div>
  <div class="footer-right">
    <nav>
      <ul>
         
          <li><a href="/">Home</a></li>
         
          <li><a href="/about/">About</a></li>
         
          <li><a href="/archives/">Writing</a></li>
         
          <li><a href="http://github.com/enominecn">Projects</a></li>
        
      </ul>
    </nav>
  </div>
</footer>

    <script src="/lib/justified-gallery/jquery.justifiedGallery.min.js"></script>
<script src="/js/main.js"></script>
<!-- Google Analytics -->

    <script type="text/javascript">
        (function(i,s,o,g,r,a,m) {i['GoogleAnalyticsObject']=r;i[r]=i[r]||function() {
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
        ga('create', 'UA-86660611-1', 'auto');
        ga('send', 'pageview');
    </script>

<!-- Disqus Comments -->


</body>
</html>
